home *** CD-ROM | disk | FTP | other *** search
Text File | 1999-10-29 | 11.2 KB | 252 lines | [ttro/ttxt] |
- DrawSprocket 1.7
- Release Notes
- --------------------
-
- For a detailed list of changes from the previous version, please read the
- change list at the end of this document.
-
- Please report all bugs using the bug reporter on Apple Developer Connection:
-
- <http://developer.apple.com/bugreporter/index.html>
-
- Release Components
- ------------------
- DrawSprocket Release Notes - this file
- DrawSprocket API v1.1 ERS.pdf - API documentation
- DSp Debugging Tips - tips for debugging DSp programs
-
- Interfaces&Libraries - headers and link libraries
-
- DrawSprocketLib - release version of the library
- DrawSprocketDebugLib - debugging version of the library
-
- WARNING: don't place both the debugging and non-debugging versions of the
- library in the search path or you will not be sure which version you are
- using.
-
-
- Dependencies
- ------------
-
- DrawSprocket 1.7 requires Mac OS 8.1 or later.
-
- DrawSprocket requires version 3.2 or later of the Universal Headers -- You can find them with the
- latest version of your development environment, Apple's WWW and FTP sites or the
- developer CD ROMs.
-
-
- Compatibility with Previous Releases
- ------------------------------------
-
- DrawSprocket 1.7 is now PowerPC-only. It is fully compatible with all previous
- PowerPC apps which used DrawSprocket.
-
- Changes from 1.1.4 to 1.7
-
- Bug Fixes:
- - There was a race condition for 3-page contexts which could cause a crash when
- you inactivated the context. This has been fixed.
-
- Changes:
- - DSpGetVersion() has now been added. It returns a structure of type NumVersion.
-
- - DSpGetCurrentContext() has been added. Given a display ID it returns the context
- which matches the state of the current display geometry.
-
- - Added DSpFindBestContextOnDisplayID(). This is the same as DSpFindBestContext() but
- only searches the specified display.
-
- - Added two other new calls: DSpContext_Queue() and DSpContext_Switch(). After reserving
- the main context for a display you can then use DSpContext_Queue() to let DrawSprocket
- know that you will want to switch to other display modes. You can then use
- DSpContext_Switch() to directly switch between the two modes without having to inactivate
- the parent context and reset to the default display mode first. See the SprocketInvaders
- sample code for an example of how these new calls should be used.
-
- Changes from 1.1.3 to 1.1.4
- ---------------------------
-
- Bug Fixes:
- - Previous versions of DrawSprocket would call the Display Manager to change the display
- mode even if the target mode and current mode were the same. This would cause a
- flash of gray across the screen. This is now fixed.
-
- - Previous versions of DrawSprocket would change the gamma table on some video cards,
- resulting in "Custom Gamma" appearing in the Monitors and Sounds control panel.
- This has been fixed.
-
- - DrawSprocket now includes a ('dlgx', 128) resource so that it does not conflict with
- application dialogs.
-
- - If you passed in a color to DSpContext_FadeGamma with RGB values that were smaller
- than the size of the table (generally 256), then DrawSprocket would fade to an incorrect
- color. Additional changes were also made to support video hardware with a gamma
- channel size of greater than 8 bits.
-
- - A few other gamma table changes were made. This is a good place to clarify the usage
- of bias colors in DSpContext_FadeGamma.
- * If you don't pass in a bias color, then the smallest valid value is 0%, which
- would be all black. 100% represents the normal gamma setting of the monitor.
- * If you pass in a bias color, then -100% represents black, 0% represents the bias
- color and 100% represents the normal gamma settings of the monitor. Other values
- are interpolated based on these points. For example, 50% would be half-way between
- the bias color and the regular gamma of the monitor.
- * Values above 100% are permitted, but will peg to the maximum gamma settings.
-
- - Previous versions of DrawSprocket would call SetWRefCon on a CGrafPort.
-
- - If you paused a page-flipping context, there was a 50/50 chance that you'd put
- DrawSprocket into a state where it would lock up within two swaps after you unpaused
- the context. This has been corrected.
-
- - When you pause and resume a context, the front page's visRgn was not being reset
- properly. This meant that apps using QuickDraw would no longer be able to draw to the
- menubar portion of the screen after the context was resumed. This only affected
- applications using page flipping or direct access to the front buffer.
-
- - Under extremely low-memory conditions, it was possible for DrawSprocket to fail to
- allocate a CGrafPort, and then pass a NULL pointer to CloseCPort, causing the machine
- to die an agonizing death. While applications should be checking for low memory
- conditions (see Inside Mac: Memory), DrawSprocket will no longer call CloseCPort on
- a NULL pointer.
-
- - If you attempted to reserve a context with a pixel depth of less than 8 bits per pixel,
- DrawSprocket would calculate rowBytes improperly.
-
-
- Changes:
- - The order in which DrawSprocket will pick resolutions has been modified. If DrawSprocket
- has two contexts that both meet the required attributes, this is the order in which
- DrawSprocket prioritizes its selection:
-
- * Choose the context with the smallest dimensions
- * Choose a context in the preferred depth over any other depth
- * Choose a context with the smallest depth
- * Always choose a safe context on the main monitor, or the current mode on the main
- monitor, over a context on any other monitor.
- * Choose a context that is the current mode of a monitor over any other context.
- * Choose a safe mode for a monitor over any unsafe mode
- * If both contexts are safe, choose the one with the higher refresh rate
- * If only one of the contexts is on the main device, choose it
-
- Obviously, many things on this list don't apply if you can DSpUserSelectContext, which
- of course, you *should* be doing.
-
- - Additional error handling code was added it to catch errors returned by the Display
- Manager.
-
- - Additional debug asserts were added to catch application errors. Please test your code.
-
- - GoggleSprocket is no longer a supported product. Starting with this version of
- DrawSprocket, any attempt to find or reserve a stereo context will fail with an error.
-
-
- Known Issues:
-
- - DrawSprocket does not pad rowBytes, or enforce it to be any particular multiple.
- However, its blitter functions expect rowBytes to be a multiple of 8 (PPC) or 16 (68K).
- If you allocate an alt-buffer, be sure to choose your bounds appropriately.
-
- - DrawSprocket can mess up the location of the Application Switcher in 8.5.
-
- - If you are using a 7500/7600/8500/8600 machine, you must reset the gamma whenever you
- activate or deactivate the context. Doing a gamma fade is sufficient to do this. If
- you do not do this, the color tables aren't reset properly, and the screen will be a
- flat grey. In addition, pausing a page-flip context on one of those machines will
- result in the screen being filled with garbage (VRAM is reorganized).
-
-
- Changes from 1.1.2 to 1.1.3
- ---------------------------
-
- Bug Fixes:
-
- - DSp 1.1.2 would crash when you called the 68K versions of the blit calls.
- - Removed the load delay when DSp is starting up. Thanx to Kent Miller for that!
-
- Changes:
-
- - You can now call DSpUserSelectContext() on a single-monitor system when you are in
- debug mode. This is so that you can test your DSpUSC() code on a single monitor system.
-
-
-
- Changes from 1.1 to 1.1.2
- -------------------------
-
- I just wanted to take a moment and mention the great assistance that was provided by
- Kirk Sumner of MacSoft and Chris Capener of Apple Computer for their assistance in
- this release of DrawSprocket. Without them abusing the heck out of it I never would
- have found all the GetFrontBuffer and multiple monitor bugs that have been plaguing
- the last several release. Gentlemen, my infinite thanx.
-
-
- Bug Fixes:
-
- - there was a bug in SetCLUTEntries that would update the colors improperly
- if you didn't start updating at color 0.
-
- - removed an assert in the debug library that caused problems on some video
- cards.
-
- - there was a problem where if a context was placed on a display that did not
- physically support the params, and if that display wasn't the main monitor
- then QuickDraw calls wouldn't work on those buffers. This is fixed.
-
- - the new call DSpContext_GetFrontBuffer() had a bug where the CGrafPort
- representation of the front-buffer was invalid if it wasn't on the main
- monitor. You could write directly into the pixmap but you couldn't use
- QuickDraw calls. This is now fixed.
-
- - The above fix brought out a bunch of other bugs related to multiple-monitor
- usage. These are fixed as well.
-
- - removed DebugStr()'s that were left in the non-debug build.
-
- - A CGrafPtr was left dangling from OpenCPort(), causing crashes on some systems
- (when used with OpenDoc, most noticeably).
-
- - a page swap queued immediately before a context pause or inactivation would
- still occur after the state change. Now all pending swaps are completed before
- the state change.
-
- - requesting an alt buffer with rowbytes == width would not work correctly if the
- width was smaller than the display width.
-
- - fixed some null-pointer dereferences.
-
- - the rightmost portion of the menu bar was not being re-added to
- the gray region after a context deactivation, when the context resolution
- was smaller than the desktop resolution. The control strip sometimes went
- under the menu bar on context deactivation because of this.
-
- - duplicate buffer release when closing down a page flipped context.
-
- - was not correctly disposing of alt buffers, causing duplicate
- releases.
-
- - fixed a bug where invalidating the entire underlay buffer only redrew the
- back buffer's dirty rects instead of the entire buffer.
-
- - there was an anomalous condition involved with setting a page count of 1 and
- page-flipping active on machines that have page-flipping. In essence, you'd
- always be waiting for page 0 to become free and it never would. If you have
- the page-flipping bit turned on and the hardware supports it the page-count
- will now always be set to a minimum of two.
-
- Changes:
-
- - DrawSprocket is now weak-linked against the Display Manager. If DM is
- not present DrawSprocket _will_ load but the call to DSpStartup() will fail
- and return an error code.
-
- - removed some timing code in the slot VBL task to improve
- performance that was degraded in 1.1.
-
- - Several changes to the user select context dialog. You can now double-click
- on the rect for a monitor to select it and continue. You can now hit ESC, or
- Command-period to cancel. You can also hit tab or space to cycle through the
- monitors.
-
- - New call - DSpContext_GetFrontBuffer(). This gives you a CGrafPtr to access the
- front buffer of your DSp context. This was previously a private call.